diff --git a/user_guide/general/creating_libraries.html b/user_guide/general/creating_libraries.html
index da096d8..dba5f49 100644
--- a/user_guide/general/creating_libraries.html
+++ b/user_guide/general/creating_libraries.html
@@ -68,93 +68,131 @@
 
 <h2>Storage</h2>
 
-<p>In order for your libraries to be stored in your <kbd>application</kbd> folder you will need to create two directories in which to store them:</p>
-
-<ul>
-<li>application/<dfn>init</dfn></li>
-<li>application/<dfn>libraries</dfn></li>
-</ul>
-
-
-<h2>Anatomy of a Library</h2>
-
-<p>A class library consists of two components:</p>
-
-<ol>
-<li>An <kbd>init</kbd> file.</li>
-<li>A <kbd>class</kbd> file.</li>
-</ol>
-
-<h2>The Init File</h2>
-
-<p>An <kbd>init</kbd> file a small initialization file corresponding to each of your classes.  The purpose of this file is to 
-instantiate a particular class. Each init file must be named identically to your class file name, adding the "init_" prefix.  For example, if your
-class is named <dfn>myclass.php</dfn> your init file will be named:</p>
-
-<code>init_myclass.php</code>
-
-<p>Within your init file you will place your initialization code.  Here's an example of such code, using an imaginary class named <kbd>Myclass</kbd>:</p>
-
-
-<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
-<br />
-if ( ! class_exists('<kbd>Myclass</kbd>'))<br />
-{<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;require_once(APPPATH.'libraries/<kbd>Myclass</kbd>'.EXT);<br />
-}<br />
-<br />
-$obj =& get_instance();<br />
-$obj-><kbd>myclass</kbd> = new <kbd>Myclass();</kbd><br />
-<br />
-?&gt;</code>
-
-<h2>The Class File</h2>
-
-<p>Your class file itself will be placed inside your <dfn>libraries</dfn> directory:</p>
-
-<code>application/libraries/<dfn>myclass.php</dfn></code>
-
-<p>The class will have this basic prototype:</p>
-
-<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
-<br />
-class Myclass {<br />
-<br />
-}<br />
-?&gt;</code>
+<p>Your library classes should be placed within your <dfn>application/libraries</dfn> folder, as this is where Code Igniter will look for them when 
+they are initialized. If your class is named identically to a native class from the <dfn>system/libraries</dfn> folder, your version
+will be used instead.</p>
 
 
 <h2>Naming Conventions</h2>
 
 <ul>
-<li>All file names must be in lowercase:  myclass.php and init_myclass.php</li>
-<li>Class names must be capitalize:  class Myclass</li>
+<li>File names must be capitalized. For example:&nbsp; <dfn>Myclass.php</dfn></li>
+<li>Class declarations must be capitalized. For example:&nbsp;  <kbd>class Myclass</kbd></li>
+<li>Class names and file names must match.</li>
 </ul>
 
 
+<h2>The Class File</h2>
+
+<p>Classes should have this basic prototype (Note:  We are using the name <kbd>Myclass</kbd> purely as an example):</p>
+
+<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
+<br />
+// Initialize the class<br />
+$obj =& get_instance();<br />
+$obj->init_class('Myclass');
+<br /><br />
+class Myclass {<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function some_function()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;{<br />
+&nbsp;&nbsp;&nbsp;&nbsp;}<br />
+}<br /><br />
+?&gt;</code>
+
+
+<p>You'll notice in the above example that the class is instantiated directly from the file itself using these two lines of code:</p>
+
+<code>$obj =& get_instance();<br />
+$obj->init_class(<kbd>'Myclass'</kbd>);</code>
+
+<p class="important">Make sure and submit your class name in the first parameter of the <kbd>$obj->init_class()</kbd> function. In the
+above example it is <kbd>Myclass</kbd></p>
+
+
 <h2>Using Your Class</h2>
 
-<p>From within any of your <a href="controllers.html">Controller</a> classes you can initialize your class using the standard:</p>
+<p>From within any of your <a href="controllers.html">Controller</a> functions you can initialize your class using the standard:</p>
 
-<code>$this->load->library('<kbd>myclass</kbd>');</code>
+<code>$this->load->library('<kbd>Mclass</kbd>');</code>
+
+<p>Where <em>Myclass</em> is the file name, without the ".php" file extension. You can submit the file name capitalized or lower case. 
+Code Igniter doesn't care.</p>
 
 <p>Once loaded you can access your class using:</p>
 
-<code>$this-><kbd>myclass</kbd>->function();</code>
+<code>$this-><kbd>myclass</kbd>->some_function();&nbsp; // Object instances will always be lower case
+</code>
 
-<p>Note: In your init file you can define the object variable name.</p>
+<h2>Setting a Different Class Variable Name</h2>
 
 
-<h2>Passing Parameters Your Class</h2>
+<p>If you would like the object variable ($this->myclass) set to a different name you can specify it when initializing your class.  For
+example, let's initialize it as <kbd>foobar</kbd>:</p>
 
-<p>In the library loading function you can pass data via the second parameter and it will be available to your initialization file:</p>
+<code>$obj =& get_instance();<br />
+$obj->init_class('Myclass', <kbd>'foobar'</kbd>);</code>
+
+<p>In the above example you would still load your class like this:</p>
+
+<code>$this->load->library('<kbd>Mclass</kbd>');</code>
+
+<p>But you would use it like this:<p>
+
+<code>$this-><kbd>foobar</kbd>->function();</code>
+
+
+<h2>Passing Parameters When Initializing Your Class</h2>
+
+<p>In the library loading function you can dynamically pass data via the second parameter and it will be passed to your class 
+constructor:</p>
 
 <code>
 $params = array('type' => 'large', 'color' => 'red');<br />
 <br />
-$this->load->library('myclass', <kbd>$params</kbd>);</code>
+$this->load->library('Myclass', <kbd>$params</kbd>);</code>
 
-<p>Parameters will be accessible using a variable called <kbd>$params</kbd>.  By default this variable is set to FALSE.</p>
+<p>If you use this feature you must set up your class constructor to expect data:</p>
+
+<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
+<br />
+// Initialize the class<br />
+$obj =& get_instance();<br />
+$obj->init_class('Myclass');
+<br /><br />
+class Myclass {<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function Myclass($params)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;{<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Do something with $params<br />
+&nbsp;&nbsp;&nbsp;&nbsp;}<br />
+}<br /><br />
+?&gt;</code>
+
+<p>You can also pass parameters via the third parameter of the <dfn>$obj->init_class()</dfn> function:</p>
+
+<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
+<br />
+
+$params = array('type' => 'large', 'color' => 'red');<br /><br />
+
+// Initialize the class<br />
+$obj =& get_instance();<br />
+$obj->init_class('Myclass', 'myclass', $params);
+<br /><br />
+class Myclass {<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function Myclass($params)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;{<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Do something with $params<br />
+&nbsp;&nbsp;&nbsp;&nbsp;}<br />
+}<br /><br />
+?&gt;</code>
+
+
+
+
+
 
 
 <h2>Utilizing Code Igniter Resources within Your Library</h2>
@@ -163,7 +201,7 @@
 <p>To access Code Igniter's native resources within your library use the <kbd>get_instance()</kbd> function.
 This function returns the Code Igniter super object.</p>
 
-<p>Normally, to call any of the available Code Igniter functions requires you to use the <kbd>$this</kbd> construct:</p>
+<p>Normally from within your controller functions you will call any of the available Code Igniter functions using the <kbd>$this</kbd> construct:</p>
 
 <code>
 <strong>$this</strong>->load->helper('url');<br />
